/*
 * @Author: hucc
 * @Date: 2021-09-27 11:18:10
 * @LastEditors: hucc
 * @LastEditTime: 2021-09-27 19:08:49
 * @Description: 
 */

let obj1 = {
    name: "zs",
    age: 12,
    gender: "male"
}
let map = new Map(Object.entries(obj1));
console.log(map); //Map(3) { 'name' => 'zs', 'age' => 12, 'gender' => 'male' }
//Map里面的key值不限形式，可以是任意数据类型
//Map.prototype.set(key,value) 设置键名key对应的键值为value，
//然后返回整个map结构。如果key已经有值，则键值会被更新 否则就新生成该键。
map.set(true, 10);
map.set({ a: 1, b: 2 }, ['tom', 'jacky']);
console.log(map);

//Map.prototype.size  返回Map实例对象成员的个数
console.log(map.size); //5

//Map.prototype.get(key) 返回key相对应的value值 找不到返回undefined
console.log(map.get(true)); //10

//Map.prototype.delete(key)  删除某个键，返回布尔类型的值
console.log(map.delete(true)); //true

//Map.prototype.clear() 清除所有成员 没有返回值
//Map.prototype.keys()    返回键名的遍历器
//Map.prototype.values()  返回键值的遍历器
//Map.prototype.entries() 返回键值对的遍历器
//Map.prototype.forEach() 回调函数遍历

//Map.prototype.forEach()  不管参数怎么写 输出的都是属性值 属性名
map.forEach((value, key) => {
    console.log(value, key);
    //console.log(key);
    // console.log(value);
    //zs name
    //12 age
    //male gender
    //[ 'tom', 'jacky' ] { a: 1, b: 2 }
})